package com.cs.beneficios.web.action;

import com.cs.beneficios.business.entity.AtributosDAO;
import com.cs.beneficios.business.entity.BeneficiarioDAO;
import com.cs.beneficios.business.entity.BeneficioDAO;
import com.cs.beneficios.business.entity.InterfazMELDAO;
import com.cs.beneficios.business.entity.RenovarDAO;
import com.cs.beneficios.business.entity.SedeDAO;
import com.cs.beneficios.business.entity.SubProgramaDAO;
import com.cs.beneficios.business.model.AtributoVO;
import com.cs.beneficios.business.model.BeneficiarioVO;
import com.cs.beneficios.business.model.InterfazMELVO;
import com.cs.beneficios.business.model.RenovarVO;
import com.cs.beneficios.business.model.SubProgramaVO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.paoyer.administration.business.model.UserVO;

import java.io.IOException;

import java.sql.ResultSet;
import java.sql.SQLException;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class IngresoDatosRenovarAction extends Action {
	/**
	 * This is the main action called from the Struts framework.
	 * 
	 * @param mapping
	 *            The ActionMapping used to select this instance.
	 * @param form
	 *            The optional ActionForm bean for this request.
	 * @param request
	 *            The HTTP Request we are processing.
	 * @param response
	 *            The HTTP Response we are processing.
	 * @return
	 * @throws java.io.IOException
	 * @throws javax.servlet.ServletException
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {
		// ConnectionFactory cf = new
		// ConnectionFactory("beneficios","beneficios");
		ConnectionFactory cf = new ConnectionFactory();
		SubProgramaVO codigosub = new SubProgramaVO();
		SubProgramaDAO sub = new SubProgramaDAO(cf);

		String strCodigoSubpro = request.getParameter("codBeneficio");
		codigosub.setCode(new Long(strCodigoSubpro));

		// Proceso para la auditoria
		String terminalAddress = request.getRemoteAddr();
		String strTerminal = ("WEB=" + terminalAddress);
		Calendar c = Calendar.getInstance();
		SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
		// Fin del proceso

		HttpSession session = request.getSession();
		session.setAttribute("CodigoSubpro", strCodigoSubpro);
		session.removeAttribute("renovacion");
		session.removeAttribute("ListaAtributos");
		session.removeAttribute("DateBirth");
		session.setAttribute("renovacion", "renovar");
		BeneficiarioVO beneVO = new BeneficiarioVO();
		List coPropBeneficiario = (List) session.getAttribute("beneSelected");
		Long CodeSubPro = new Long(strCodigoSubpro);
		List lAtributos = new LinkedList();
		String strValidoGF = "No";
		String Respuesta = "No";
		// Proceso para convertir los atributos que no tienen valores en la
		// lista
		try {
			AtributosDAO atriDAO = new AtributosDAO(cf);
			int conversion = atriDAO.getAtributosVallista(strCodigoSubpro);
			cf.closeConnection(atriDAO.getConn());
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}
		// Fin del proceso
		// proceso para identificar si el beneficiario tiene grupo familiar
		beneVO = (BeneficiarioVO) coPropBeneficiario.get(0);
		Object obgrupo = (Object) beneVO.getGrupoFamiliarCode();

		BeneficiarioDAO benefDAO = null;
		// Proceso para identificar si el beneficio es para un grupo familiar
		try {
			benefDAO = new BeneficiarioDAO(cf);
			strValidoGF = benefDAO.getSubProGrupoFam(CodeSubPro);
			cf.closeConnection(benefDAO.getConn());
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSUB - cwsub ********/");
		}
		// Fin del Proceso
		if (strValidoGF.equals("Si")) {
			if (obgrupo != null) {

				try {
					benefDAO = new BeneficiarioDAO(cf);
					List coGrupoFami = (List) benefDAO.getGrupoFamiliar(beneVO);
					cf.closeConnection(benefDAO.getConn());
					int tamagf = coGrupoFami.size();
					for (int k = 0; k < tamagf; k++) {
						if (Respuesta.equals("No")) {
							BeneficiarioVO bene1VO = new BeneficiarioVO();
							bene1VO = (BeneficiarioVO) coGrupoFami.get(k);
							Long codebeneficiario = bene1VO.getCode();

							Respuesta = benefDAO.getBeneficiosGrupoFam(
									codebeneficiario, CodeSubPro);
						}
					}
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}
			}
		}
		// fin del proceso

		if (Respuesta.equals("No")) {
			UserVO user = (UserVO) session.getAttribute("userInfo");
			String strCodigoUsuario = user.getCode().toString();

			Collection atributos = null;
			Collection Csedes = null;

			AtributosDAO objAtributoDAO;
			AtributoVO objAtributoVO = new AtributoVO();

			SedeDAO objSedeDAO;
			String strCodigoBeneficiario = request.getParameter("code");
			session.setAttribute("beneficiario", strCodigoBeneficiario);
			try {

				List lNom = (List) sub.findSubProgramaByCriterea(codigosub,
						user.getCode(), user.getUserGroupName(),
						user.getCodeArea());
				cf.closeConnection(sub.getConn());

				codigosub = (SubProgramaVO) lNom.get(0);
				String strNombre = codigosub.getNombre();
				session.setAttribute("NombreSub", strNombre);

				objAtributoDAO = new AtributosDAO(cf);
				atributos = objAtributoDAO
						.GetAtributos(strCodigoSubpro, "A", 0);
				cf.closeConnection(objAtributoDAO.getConn());

				int tam = atributos.size();
				String strTamano = String.valueOf(tam);

				session.setAttribute("tamanoLista", strTamano);
				session.setAttribute("ListaAtributos", atributos);

				objSedeDAO = new SedeDAO(cf);
				Csedes = objSedeDAO.GetTotalSedebyUser(user.getCode(),
						new Long(strCodigoSubpro), user.getUserGroupName(),
						user.getCodeArea());
				cf.closeConnection(objSedeDAO.getConn());
				if ((Object) Csedes != null) {
					if (Csedes.size() > 0)
						session.setAttribute("ListaSede", Csedes);
				}

				// Carlos interface Sisben

				// strCodigoBeneficiario
				// strCodigoSubpro

				try {
					SubProgramaVO subproVO = new SubProgramaVO();
					subproVO.setCode(new Long(strCodigoSubpro));
					SubProgramaDAO subproDAO = new SubProgramaDAO(cf);
					List subpro = (List) subproDAO.findSubProgramaByCriterea(
							subproVO, user.getCode(), user.getUserGroupName(),
							user.getCodeArea());
					if (subpro != null && subpro.size() > 0) {
						subproVO = (SubProgramaVO) subpro.get(0);
						if (subproVO.getValidarSisben().equals("S")) {
							// Buscando el beneficiario en la bd del sisben
							beneVO = new BeneficiarioVO();
							beneVO.setCode(new Long(strCodigoBeneficiario));
							BeneficiarioDAO beneDAO;
							try {
								beneDAO = new BeneficiarioDAO(cf);
								List beneficiario = (List) beneDAO
										.findBeneficiarioByCriterea(beneVO, "");
								if (beneficiario != null
										&& beneficiario.size() > 0) {
									beneVO = (BeneficiarioVO) beneficiario
											.get(0);
									BeneficiarioVO beneSisbenVO = new BeneficiarioVO();
									// empezando a buscar el beneficiario en
									// sisben por todos los criterios
									beneSisbenVO.setTipoDocumento(beneVO
											.getTipoDocumento());
									beneSisbenVO.setNumeroDocumento(beneVO
											.getNumeroDocumento());
									beneSisbenVO
											.setNombre1(beneVO.getNombre1());
									beneSisbenVO
											.setNombre2(beneVO.getNombre2());
									beneSisbenVO.setPrimerApellido(beneVO
											.getPrimerApellido());
									beneSisbenVO.setSegundoApellido(beneVO
											.getSegundoApellido());
									beneSisbenVO.setFechaNacimiento(beneVO
											.getFechaNacimiento());
									List beneficiarioSisben = (List) beneDAO
											.findBeneficiarioSisben(beneSisbenVO);
									boolean encontro = false;
									if (beneficiarioSisben != null
											&& beneficiarioSisben.size() > 0) {
										encontro = true;
									} else {
										beneSisbenVO = new BeneficiarioVO();
										beneSisbenVO.setNombre1(beneVO
												.getNombre1());
										beneSisbenVO.setNombre2(beneVO
												.getNombre2());
										beneSisbenVO.setPrimerApellido(beneVO
												.getPrimerApellido());
										beneSisbenVO.setSegundoApellido(beneVO
												.getSegundoApellido());
										beneSisbenVO.setFechaNacimiento(beneVO
												.getFechaNacimiento());
										beneficiarioSisben = (List) beneDAO
												.findBeneficiarioSisben(beneSisbenVO);
										if (beneficiarioSisben != null
												&& beneficiarioSisben.size() > 0) {
											encontro = true;
										} else {
											beneSisbenVO = new BeneficiarioVO();
											beneSisbenVO
													.setNumeroDocumento(beneVO
															.getNumeroDocumento());
											beneSisbenVO.setNombre1(beneVO
													.getNombre1());
											beneSisbenVO.setNombre2(beneVO
													.getNombre2());
											beneSisbenVO
													.setPrimerApellido(beneVO
															.getPrimerApellido());
											beneSisbenVO
													.setSegundoApellido(beneVO
															.getSegundoApellido());
											beneficiarioSisben = (List) beneDAO
													.findBeneficiarioSisben(beneSisbenVO);
											if (beneficiarioSisben != null
													&& beneficiarioSisben
															.size() > 0) {
												encontro = true;
											} else {
												beneSisbenVO = new BeneficiarioVO();
												beneSisbenVO
														.setNumeroDocumento(beneVO
																.getNumeroDocumento());
												beneSisbenVO.setNombre1(beneVO
														.getNombre1());
												beneSisbenVO
														.setPrimerApellido(beneVO
																.getPrimerApellido());
												beneSisbenVO
														.setFechaNacimiento(beneVO
																.getFechaNacimiento());
												beneficiarioSisben = (List) beneDAO
														.findBeneficiarioSisben(beneSisbenVO);
												if (beneficiarioSisben != null
														&& beneficiarioSisben
																.size() > 0) {
													encontro = true;
												} else {
													beneSisbenVO = new BeneficiarioVO();
													beneSisbenVO
															.setNumeroDocumento(beneVO
																	.getNumeroDocumento());
													beneSisbenVO
															.setNombre1(beneVO
																	.getNombre1());
													beneSisbenVO
															.setPrimerApellido(beneVO
																	.getPrimerApellido());
													beneficiarioSisben = (List) beneDAO
															.findBeneficiarioSisben(beneSisbenVO);
													if (beneficiarioSisben != null
															&& beneficiarioSisben
																	.size() > 0) {
														encontro = true;
													} else {
														beneSisbenVO = new BeneficiarioVO();
														beneSisbenVO
																.setNumeroDocumento(beneVO
																		.getNumeroDocumento());
														beneSisbenVO
																.setNombre2(beneVO
																		.getNombre2());
														beneSisbenVO
																.setSegundoApellido(beneVO
																		.getSegundoApellido());
														beneSisbenVO
																.setFechaNacimiento(beneVO
																		.getFechaNacimiento());
														beneficiarioSisben = (List) beneDAO
																.findBeneficiarioSisben(beneSisbenVO);
														if (beneficiarioSisben != null
																&& beneficiarioSisben
																		.size() > 0) {
															encontro = true;
														} else {
															beneSisbenVO = new BeneficiarioVO();
															beneSisbenVO
																	.setTipoDocumento(beneVO
																			.getTipoDocumento());
															beneSisbenVO
																	.setNumeroDocumento(beneVO
																			.getNumeroDocumento());
															beneficiarioSisben = (List) beneDAO
																	.findBeneficiarioSisben(beneSisbenVO);
															if (beneficiarioSisben != null
																	&& beneficiarioSisben
																			.size() > 0) {
																encontro = true;
															}
														}
													}
												}
											}
										}
									}
									cf.closeConnection(beneDAO.getConn());
									if (!encontro) {
										session.setAttribute(
												"msg",
												"El beneficiario no se encontro en Sisben por lo tanto no se le puede otorgar un beneficio que valide contra Sisben.");
										return mapping
												.findForward("verbeneficio");
									} else {
										if (beneficiarioSisben.size() == 1) {
											if (subpro != null
													&& subpro.size() > 0) {
												subproVO = (SubProgramaVO) subpro
														.get(0);

												List atri = (List) atributos;
												if (atri != null
														&& atri.size() > 0) {
													AtributoVO atributo = null;
													beneVO = (BeneficiarioVO) beneficiarioSisben
															.get(0);
													for (int i = 0; i < atri
															.size(); i++) {
														atributo = (AtributoVO) atri
																.get(i);

														if (atributo
																.getNombre()
																.equals("NIVEL SISBEN")) {
															request.setAttribute(
																	"nivel",
																	beneVO.getNivelSisben());
														}
														if (atributo
																.getNombre()
																.equals("PUNTAJE")) {
															request.setAttribute(
																	"puntaje",
																	beneVO.getPuntajeSisben());
														}
													}
												}
											}
										}
									}
								}

							} catch (SQLException e) {
								System.err.println("/******** TDSUB - cwsub");
								e.printStackTrace();
								System.err.println("TDSUB - cwsub ********/");
							}
							// fin interfaz SISBEN
						}
					}
					cf.closeConnection(subproDAO.getConn());

					// inicio interfaz MATRICULA EN LINEA

					if (subpro != null && subpro.size() > 0) {
						subproVO = (SubProgramaVO) subpro.get(0);
						if (subproVO.getValidarEstud().equals("S")) {
							beneVO = new BeneficiarioVO();
							beneVO.setCode(new Long(strCodigoBeneficiario));
							BeneficiarioDAO beneDAO;
							boolean encontro = false;
							try {
								beneDAO = new BeneficiarioDAO(cf);
								List beneficiario = (List) beneDAO
										.findBeneficiarioByCriterea(beneVO, "");
								if (beneficiario != null
										&& beneficiario.size() > 0) {
									beneVO = (BeneficiarioVO) beneficiario
											.get(0);
									BeneficiarioVO beneMLVO = new BeneficiarioVO();
									// empezando a buscar el beneficiario en ML
									// por tipo y numero de documento
									beneMLVO.setTipoDocumento(beneVO
											.getTipoDocumento());
									beneMLVO.setNumeroDocumento(beneVO
											.getNumeroDocumento());
									List beneficiarioMEL = (List) beneDAO
											.findBeneficiarioMEL(beneMLVO);

									if (beneficiarioMEL != null
											&& beneficiarioMEL.size() > 0) {
										encontro = true;
										InterfazMELDAO MELDAO = new InterfazMELDAO(
												cf);
										List camposMEL = MELDAO
												.getCamposGenericos(beneVO);
										if (camposMEL != null
												&& camposMEL.size() > 0) {
											List atri = (List) atributos;
											if (atri != null && atri.size() > 0) {
												AtributoVO atributo = null;
												InterfazMELVO MELVO = (InterfazMELVO) camposMEL
														.get(0);
												for (int i = 0; i < atri.size(); i++) {
													atributo = (AtributoVO) atri
															.get(i);
													if (atributo
															.getNombre()
															.equals("NOMBRE PADRE")) {
														request.setAttribute(
																"nompadre",
																MELVO.getNomPadre());
													}
													if (atributo
															.getNombre()
															.equals("CEDULA PADRE")) {
														request.setAttribute(
																"cedpadre",
																MELVO.getCedulaPadre());
													}
													if (atributo
															.getNombre()
															.equals("TELEFONO PADRE")) {
														request.setAttribute(
																"telpadre",
																MELVO.getTelPadre());
													}
													if (atributo
															.getNombre()
															.equals("NOMBRE MADRE")) {
														request.setAttribute(
																"nommadre",
																MELVO.getNomMadre());
													}
													if (atributo
															.getNombre()
															.equals("CEDULA MADRE")) {
														request.setAttribute(
																"cedmadre",
																MELVO.getCedulaMadre());
													}
													if (atributo
															.getNombre()
															.equals("TELEFONO MADRE")) {
														request.setAttribute(
																"telmadre",
																MELVO.getTelMadre());
													}
													if (atributo
															.getNombre()
															.equals("NOMBRE ACUDIENTE")) {
														request.setAttribute(
																"nomacu",
																MELVO.getNomAcu());
													}
													if (atributo
															.getNombre()
															.equals("CEDULA ACUDIENTE")) {
														request.setAttribute(
																"cedacu",
																MELVO.getCedulaAcu());
													}
													if (atributo
															.getNombre()
															.equals("TELEFONO ACUDIENTE")) {
														request.setAttribute(
																"telacu",
																MELVO.getTelAcu());
													}
													if (atributo
															.getNombre()
															.equals("INSTITUCION EDUCATIVA")) {
														request.setAttribute(
																"nominsti",
																MELVO.getNomInstitucion());
													}
													if (atributo
															.getNombre()
															.equals("DIRECCION INST. EDUCATIVA")) {
														request.setAttribute(
																"dirinsti",
																MELVO.getDirInstitucion());
													}
													if (atributo
															.getNombre()
															.equals("TELEFONO INST. EDUCATIVA")) {
														request.setAttribute(
																"telinsti",
																MELVO.getTelInstitucion());
													}
													if (atributo
															.getNombre()
															.equals("NOMBRE SEDE")) {
														request.setAttribute(
																"nomsede",
																MELVO.getNomSede());
													}
													if (atributo
															.getNombre()
															.equals("DIRECCION SEDE")) {
														request.setAttribute(
																"dirsede",
																MELVO.getDirSede());
													}
													if (atributo
															.getNombre()
															.equals("TELEFONO SEDE")) {
														request.setAttribute(
																"telsede",
																MELVO.getTelSede());
													}
													if (atributo.getNombre()
															.equals("GRADO")) {
														request.setAttribute(
																"grado",
																MELVO.getGrado());
													}
													if (atributo.getNombre()
															.equals("JORNADA")) {
														request.setAttribute(
																"jornada",
																MELVO.getJornada());
													}
													if (atributo
															.getNombre()
															.equals("NUCLEO EDUCATIVO")) {
														request.setAttribute(
																"nucleo",
																MELVO.getNucleo());
													}
												}
											}
										}
										cf.closeConnection(MELDAO.getConn());
									}
								}
								cf.closeConnection(beneDAO.getConn());
							} catch (SQLException e) {
								System.err.println("/******** TDSUB - cwsub");
								e.printStackTrace();
								System.err.println("TDSUB - cwsub ********/");
							}

							if (!encontro) {
								session.setAttribute(
										"msg",
										"El beneficiario no se encontro en Matricula en Linea por lo tanto no se le puede otorgar un beneficio que valide contra Matricula en Linea.");
								return mapping.findForward("verbeneficio");
							}
						}
					}

					// fin interfaz MATRICULA EN LINEA

				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSUB - cwsub ********/");
				}

				// /////////////FIN INTERFACES///////////////////

				// Proceso para calcular la edad
				beneVO = (BeneficiarioVO) coPropBeneficiario.get(0);
				String strFechaNacimiento = beneVO.getFechaNacimiento();
				if (strFechaNacimiento != null
						&& !strFechaNacimiento.equals("")) {
					AtributoVO objAtriVO = new AtributoVO();
					lAtributos = (List) atributos;
					if (atributos != null && atributos.size() != 0) {
						for (int i = 0; i < lAtributos.size(); i++) {
							objAtriVO = (AtributoVO) lAtributos.get(i);
							if ((objAtriVO.getDescripcion()).equals("EDAD")) {
								Calendar calendario = Calendar.getInstance();
								String strFechaActual = (calendario
										.get(Calendar.DAY_OF_MONTH) < 10 ? "0"
										: "")
										+ calendario.get(Calendar.DAY_OF_MONTH)
										+ "/"
										+ ((calendario.get(Calendar.MONTH) + 1) < 10 ? "0"
												: "")
										+ (calendario.get(Calendar.MONTH) + 1)
										+ "/" + calendario.get(Calendar.YEAR);

								String ArrFechaActual[] = strFechaActual
										.split("/");
								String strDayAc = ArrFechaActual[0];
								String strMonthAc = ArrFechaActual[1];
								String strYearAc = ArrFechaActual[2];

								String ArrFechaNacimiento[] = ((String) beneVO
										.getFechaNacimiento()).split("/");
								String strDayNa = ArrFechaNacimiento[0];
								String strMonthNa = ArrFechaNacimiento[1];
								String strYearNa = ArrFechaNacimiento[2];

								// resto los aNos de las dos fechas
								int iEdad = Integer.parseInt(strYearAc)
										- Integer.parseInt(strYearNa) - 1; // -1
																			// porque
																			// no
																			// se
																			// si
																			// ha
																			// cumplido
																			// a�os
																			// ya
																			// este
																			// a�o

								// si resto los meses y me da menor que 0
								// entonces no ha cumplido aNos. Si da mayor
								// si ha cumplido
								if (((Integer.parseInt(strMonthAc)) - (Integer
										.parseInt(strMonthNa))) > 0)
									iEdad += 1;

								if (((Integer.parseInt(strMonthAc)) - (Integer
										.parseInt(strMonthNa))) == 0) {
									// si resto los dias y me da menor que 0
									// entonces no ha cumplido aNos. Si da
									// mayor o igual si ha cumplido
									if (((Integer.parseInt(strDayAc)) - (Integer
											.parseInt(strDayNa))) >= 0)
										iEdad += 1;
								}

								request.setAttribute("Edad",
										String.valueOf(iEdad));
								session.setAttribute("DateBirth",
										(String) beneVO.getFechaNacimiento());
							}
						}

					}
				}
				// Fin del proceso

				// proceso que traer el resto de la informacion
				RenovarDAO objRenovar = new RenovarDAO(cf);
				List latributos = (List) objRenovar
						.GetAtributosSubpro(strCodigoSubpro);
				List lResultados = new LinkedList();
				List lBotSede = (List) objRenovar.GetBeneficioOtorgado(
						strCodigoSubpro, strCodigoBeneficiario);
				session.setAttribute("codesede", (String) lBotSede.get(1));
				for (int i = 0; i < latributos.size(); i++) {
					AtributoVO atrivo = new AtributoVO();
					atrivo = (AtributoVO) latributos.get(i);
					if (atrivo.getTipoatributo().equals("R")) {
						String strValor = objRenovar.Getbeneficiarioatri(
								atrivo.getTipodato(), strCodigoBeneficiario,
								atrivo.getCodatributo());
						RenovarVO renovarvo = new RenovarVO();
						if (strValor != null && !strValor.equals("")) {
							renovarvo.setNombre(atrivo.getNombre());
							renovarvo.setValor(strValor);
							renovarvo.setTipoatributo(atrivo.getTipoatributo());
							lResultados.add(renovarvo);
							renovarvo = null;
						} else {
							renovarvo.setNombre(atrivo.getNombre());
							renovarvo.setValor("");
							renovarvo.setTipoatributo(atrivo.getTipoatributo());
							lResultados.add(renovarvo);
							renovarvo = null;
						}
					} else {
						if (lBotSede.size() > 0) {
							String strBeneOtor = (String) lBotSede.get(0);
							ResultSet rst = objRenovar.Getbeneficioatri(
									atrivo.getTipodato(), strBeneOtor,
									atrivo.getCodatributo());
							RenovarVO renovarvo = new RenovarVO();
							if (rst.next()) {
								renovarvo.setNombre(atrivo.getNombre());
								renovarvo.setValor(rst.getString("valor"));
								renovarvo.setTipoatributo(atrivo
										.getTipoatributo());
								lResultados.add(renovarvo);
								renovarvo = null;
							} else {
								renovarvo.setNombre(atrivo.getNombre());
								renovarvo.setValor("");
								renovarvo.setTipoatributo(atrivo
										.getTipoatributo());
								lResultados.add(renovarvo);
								renovarvo = null;
							}
						}
					}
				}
				session.setAttribute("listaresultados", lResultados);
				// fin del proceso

				// Proceso para obtener el valor del beneficio
				String strCostBene = null;
				BeneficioDAO objBeneDAO = new BeneficioDAO(cf);
				strCostBene = objBeneDAO.getCostBenefit(strCodigoSubpro);
				cf.closeConnection(objBeneDAO.getConn());
				if (strCostBene != null) {
					request.setAttribute("CostBene", strCostBene);
				}
				// Fin del proceso
				// Proceso para obtener la fecha del sistema
				SimpleDateFormat dateFormat2 = new SimpleDateFormat(
						"dd/MM/yyyy");
				String strDate = dateFormat2.format(c.getTime());
				request.setAttribute("DateBene", strDate);
				// Fin del proceso
			} catch (SQLException e) {
				System.err.println("/******** TDSUB - cwsub");
				e.printStackTrace();
				System.err.println("TDSUB - cwsub ********/");
			}

			return mapping.findForward("success");
		} else {
			session.setAttribute("msg1",
					"El beneficio ya se le dio a un miembro del grupo familiar");
			return mapping.findForward("verbeneficio");
		}
	}
}